<?php

declare(strict_types=1);

namespace app\file\filter;

use sheep\filter\BaseFilter;
use think\facade\Request;
use think\db\Query;
use app\file\model\File;

/**
 * 文件管理
 */
class FileFilter extends BaseFilter
{
    /**
     * 查询文件类型
     *
     * @param Query $query
     * @param string|array $data
     * @return Query
     */
    public function fileType($query, $data) {
        $file_type = $this->getValue($data);
        $fileType = File::$fileType;
        if (in_array($file_type, ['image', 'audio', 'video'])) {
            // 根据 mimetype 查询
            return $query->where('mimetype', 'like', str_replace('*', '', $fileType[$file_type]['mimetype']) . '%');
        } else {
            // 根据 extensions 查询
            return $query->whereIn('extension', $fileType[$file_type]['extensions']);
        }
    }
}
